package br.sc.senai.model.util;

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class LogUtil {
    
    private static final Logger logger = Logger.getAnonymousLogger();
    private static String titulo = "Mensagem";
    
    public static void addError(Class pClass, String pMensagem, Boolean pMostarCliente){
        try {
            logger.log(Level.WARNING, pMensagem);
            
            if (pMostarCliente)
                JOptionPane.showMessageDialog(null, pMensagem, titulo, JOptionPane.ERROR_MESSAGE);
            
        } catch (Exception e) {
            logger.log(Level.WARNING, pMensagem);
        }
    }
    
    public static void addError(Class pClass, String pMensagem, Boolean pMostarCliente, Throwable pException){
        try {
            logger.logp(Level.WARNING, pClass.toString(), titulo, pMensagem);
            
            if (pMostarCliente)
                JOptionPane.showMessageDialog(null, pMensagem, "Erro", JOptionPane.ERROR_MESSAGE);
            
            if (pException != null){
                logger.log(Level.SEVERE, "----------------------------------------------");
                logger.log(Level.SEVERE, pException.getMessage());
                logger.log(Level.SEVERE, pException.getCause().getMessage());
                logger.log(Level.SEVERE, "----------------------------------------------");
            }
                
            
        } catch (Exception e) {
            logger.log(Level.WARNING, pMensagem);
        }
    }
    
    public static void addError(String pClass, String pMensagem, Boolean pMostarCliente, Throwable pException){
        try {
            logger.logp(Level.WARNING, pClass, "", pMensagem);
            
            if (pMostarCliente)
                JOptionPane.showMessageDialog(null, pMensagem, titulo, JOptionPane.ERROR_MESSAGE);
            
            if (pException != null){
                logger.log(Level.SEVERE, pException.getMessage());
                logger.log(Level.SEVERE, pException.getCause().getMessage());
                pException.printStackTrace();
            }
                
            
        } catch (Exception e) {
            logger.log(Level.WARNING, pMensagem);
        }
    }
    
    public static void addInfo(Class pClass, String pMensagem, Boolean pMostarCliente){
        try {
            logger.logp(Level.INFO, pClass.toString(), "", pMensagem);
            
            if (pMostarCliente)
                JOptionPane.showMessageDialog(null, pMensagem, titulo, JOptionPane.INFORMATION_MESSAGE);
            
        } catch (Exception e) {
            logger.log(Level.WARNING, pMensagem);
        }
    }
    
    public static void addInfo(String pClass, String pMensagem, Boolean pMostarCliente){
        try {
            logger.logp(Level.INFO, pClass, "", pMensagem);
            
            if (pMostarCliente)
                JOptionPane.showMessageDialog(null, pMensagem, titulo, JOptionPane.INFORMATION_MESSAGE);
            
        } catch (Exception e) {
            logger.log(Level.WARNING, pMensagem);
        }
    }
}
